home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1984-04-24 | 3.1 KB | 44 lines
10 'Written by Kurt Riegel, Arlington VA (703-522-5427) in June 1983 20 'Diskette Librarian, DOS 2.0 very simple but useful. 30 'Written for IBM-PC, monochrome monitor, DOS 2.0 BASICA, one disk drive. 40 'Suggested Filename is DISKLIB.BAS 50 '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 60 KEY OFF:CLS:DEFINT I-N:MAX=700:DEFSTR A-H:DIM NAM$(MAX),DSKNAM(99),SPACEDSK(99):DAT=DATE$ 70 LOCATE 1,8:COLOR 0,7:PRINT" Welcome to Kurt Riegel's (703-522-5427) DOS 2.0 Disk Librarian ":COLOR 2:PRINT:PRINT TAB(26)"Version ==> 830619 <== Date":PRINT 80 PRINT:PRINT"This program will ask you for diskette names (4 characters max length), read them, sort their files alphabetically, and list files and disk names compactly" 90 PRINT"on screen or printer. "MAX;"files maximum (changeable by setting MAX to":PRINT"another number in the first executable statement).":PRINT 100 PRINT:PRINT"Wait for the tweet to change disks. Don't be disturbed if there's a 2 minute hangup for system garbage collection, which sometimes occurs.":PRINT 110 PRINT"This version handles only the root directory files; treed directories may followin a later version.":PRINT:PRINT 120 '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 130 INPUT"What disk drive (CR for default drive B)";DRIVE:DRIVE=LEFT$(DRIVE,1):IF DRIVE=""THEN DRIVE ="B"ELSE DRIVE=CHR$(ASC(DRIVE)+32*(DRIVE>"Z")) 140 PRINT USING"### ## &";NAM;"files so far (";MAX;"max). "; 'screen file directory & read it 150 COLOR 0,7:PRINT DRIVE" disk name (CR to end) =>";:COLOR 2:LINE INPUT DISKNAME:IF DISKNAME=""THEN CLS:GOTO 260 160 DISKNAME=LEFT$(DISKNAME+" ",4):NDSK=NDSK+1:DSKNAM(NDSK)=DISKNAME:FILES DRIVE+":*.*":SOUND 1111,1:SOUND 2222,1 170 IY=CSRLIN-2:A="":FOR I=1 TO 8:A=A+CHR$(SCREEN(IY,I)):NEXT:SPACEDSK(NDSK)=VAL(A) 180 IY=IY-1:IF IY<1 THEN PRINT"Filled full screen--you may have lost some filenames because I'm a bit dumb.":GOTO 140 190 FOR I=0 TO 54 STEP 18:A="":FOR J=1 TO 12:A=A+CHR$(SCREEN(IY,I+J)):NEXT 200 IF LEFT$(A,1)=" " THEN 240 210 NAM=NAM+1:IF NAM>MAX THEN NAM=MAX:BEEP:CLS:PRINT MAX"file limit was reached on your last disk.":GOTO 260 220 IF INSTR(A,"\")<>0 THEN NAM=NAM-1:GOTO 140 230 NAM$(NAM)=A+" "+DISKNAME 240 NEXT:GOTO 180 250 '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 260 NFILES=NAM:PRINT" Be patient while I sort your";NFILES;"files." 'start sor 270 NGAP=NFILES\2 280 WHILE NGAP>0 290 FOR I=NGAP+1 TO NFILES 300 J=I-NGAP 310 WHILE J>0 320 IF NAM$(J)>NAM$(J+NGAP) THEN SWAP NAM$(J),NAM$(J+NGAP):J=J-NGAP ELSE J=0 330 WEND 340 NEXT 350 NGAP=NGAP\2 360 WEND 370 '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 380 CLS:PRINT TAB(19)"Sorted diskette library on date ";DAT 'screen/print the worted diskette library 390 AL="file disk ":PRINT AL;AL;AL;AL 400 N4=NFILES/4:FOR I=1 TO N4:PRINT NAM$(I);" ";NAM$(N4+I);" ";NAM$(2*N4+I);" ";NAM$(3*N4+I):NEXT 410 PRINT"__________________________Space remaining in bytes___________________________":FOR I=1 TO NDSK:TOT=TOT+SPACEDSK(I):PRINT USING"\ \####### ";DSKNAM(I);SPACEDSK(I);:NEXT:PRINT 420 PRINT NFILES"Files on"NDSK"diskettes. Total unused space ="TOT;"bytes.":PRINT" Any key rescreens library. (Ctrl-Prtsc toggles printer)":TOT=0 430 IF INKEY$<>""THEN 380 ELSE 430 'last statement